@@ -322,8 +322,10 @@ class UserInfo(CreateUpdateMixin): |
||
| 322 | 322 |
def data(self): |
| 323 | 323 |
return {
|
| 324 | 324 |
'user_id': self.user_id, |
| 325 |
+ 'name': self.name, |
|
| 325 | 326 |
'username': self.username, |
| 326 | 327 |
'nickname': self.nickname, |
| 328 |
+ 'avatar': self.avatar, |
|
| 327 | 329 |
} |
| 328 | 330 |
|
| 329 | 331 |
|
@@ -14,11 +14,10 @@ from group.models import GroupInfo, GroupUserInfo |
||
| 14 | 14 |
from utils.error.errno_utils import GroupStatusCode, GroupUserStatusCode, UserStatusCode |
| 15 | 15 |
from utils.error.response_utils import response |
| 16 | 16 |
from utils.group_photo_utils import get_current_photos |
| 17 |
-from utils.redis.rgroup import get_group_info, get_group_users_info, set_group_users_info |
|
| 17 |
+from utils.redis.rgroup import get_group_info, get_group_users_info, get_group_users_kv_info, set_group_users_info |
|
| 18 | 18 |
from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_DELETED_SET, GROUP_USERS_PASSED_SET, |
| 19 | 19 |
GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET, TOUR_GUIDE_GROUP_CUR_GATHER_INFO, |
| 20 | 20 |
TOUR_GUIDE_GROUP_CUR_SESSION, TOUR_GUIDE_GROUP_GEO_INFO, TOUR_GUIDE_GROUP_USER_GEO_LIST) |
| 21 |
-from utils.redis.rprofile import get_profile_by_id |
|
| 22 | 21 |
from utils.redis.rtourguide import get_tour_guide_own_group |
| 23 | 22 |
from utils.redis.rtouruser import set_tour_user_belong_group |
| 24 | 23 |
|
@@ -233,9 +232,11 @@ def tgu_group_user_locations_api(request): |
||
| 233 | 232 |
# [['x', 0.33, (2.68220901489e-06, 1.26736058093e-06)], []] |
| 234 | 233 |
locations = r.georadius(TOUR_GUIDE_GROUP_GEO_INFO % group_id, gather_info.get('gather_lon', 0), gather_info.get('gather_lat', 0), '+inf', unit='m', withdist=True, withcoord=True, sort='ASC')
|
| 235 | 234 |
# [{'location_info': ['x', 0.33, (2.68220901489e-06, 1.26736058093e-06)], 'user_info': {}}, {}]
|
| 235 |
+ # 获取旅行团用户 KV 信息 |
|
| 236 |
+ group_users_kv_info = get_group_users_kv_info(group_id) |
|
| 236 | 237 |
locations = [{
|
| 237 | 238 |
'location_info': loc, |
| 238 |
- 'user_info': get_profile_by_id(loc[0]) |
|
| 239 |
+ 'user_info': group_users_kv_info(loc[0]) |
|
| 239 | 240 |
} for loc in locations] |
| 240 | 241 |
|
| 241 | 242 |
return response(200, 'Get Tour Guide Group All User Location Success', u'获取旅行团成员地理位置信息成功', {
|
@@ -6,7 +6,8 @@ from django.conf import settings |
||
| 6 | 6 |
from django.core.serializers.json import DjangoJSONEncoder |
| 7 | 7 |
|
| 8 | 8 |
from utils.redis.rkeys import (GROUP_INFO, GROUP_PHOTO_COMMENT_LIST, GROUP_PHOTO_DATA, GROUP_PHOTO_THUMB_UP, |
| 9 |
- GROUP_PHOTO_THUMB_UP_LIST, GROUP_PHOTO_WATCHER_SET, GROUP_USERS_INFO) |
|
| 9 |
+ GROUP_PHOTO_THUMB_UP_LIST, GROUP_PHOTO_WATCHER_SET, GROUP_USERS_INFO, |
|
| 10 |
+ GROUP_USERS_KV_INFO) |
|
| 10 | 11 |
|
| 11 | 12 |
|
| 12 | 13 |
r = settings.REDIS_CACHE |
@@ -43,12 +44,17 @@ def get_group_info(group_id): |
||
| 43 | 44 |
def set_group_users_info(group): |
| 44 | 45 |
""" 设置群组用户信息 """ |
| 45 | 46 |
group_users = group.users(admin=False) |
| 47 |
+ |
|
| 46 | 48 |
group_users_data = {
|
| 47 | 49 |
'group_users': group_users, |
| 48 | 50 |
'admin_id': group.admin_id, |
| 49 | 51 |
} |
| 50 | 52 |
r.setex(GROUP_USERS_INFO % group.group_id, settings.REDIS_EXPIRED_MONTH, json.dumps(group_users_data, cls=DjangoJSONEncoder)) |
| 51 |
- return group_users_data |
|
| 53 |
+ |
|
| 54 |
+ group_users_kv_data = {user_info.get('user_id', ''): user_info for user_info in group_users.get('passed', [])}
|
|
| 55 |
+ r.setex(GROUP_USERS_KV_INFO % group.group_id, settings.REDIS_EXPIRED_MONTH, json.dumps(group_users_kv_data, cls=DjangoJSONEncoder)) |
|
| 56 |
+ |
|
| 57 |
+ return group_users_data, group_users_kv_data |
|
| 52 | 58 |
|
| 53 | 59 |
|
| 54 | 60 |
def set_group_users_info_by_id(group_id): |
@@ -57,19 +63,24 @@ def set_group_users_info_by_id(group_id): |
||
| 57 | 63 |
try: |
| 58 | 64 |
group = GroupInfo.objects.get(group_id=group_id) |
| 59 | 65 |
except GroupInfo.DoesNotExist: |
| 60 |
- return {}
|
|
| 66 |
+ return {}, {}
|
|
| 61 | 67 |
return set_group_users_info(group) |
| 62 | 68 |
|
| 63 | 69 |
|
| 64 | 70 |
def get_group_users_info(group_id, user_id): |
| 65 | 71 |
""" 获取群组用户信息 """ |
| 66 |
- group_users_data = json.loads(r.get(GROUP_USERS_INFO % group_id) or '{}') or set_group_users_info_by_id(group_id)
|
|
| 72 |
+ group_users_data = json.loads(r.get(GROUP_USERS_INFO % group_id) or '{}') or set_group_users_info_by_id(group_id)[0]
|
|
| 67 | 73 |
group_users, admin_id = group_users_data.get('group_users', {}), group_users_data.get('admin_id', '')
|
| 68 | 74 |
if group_users and user_id != admin_id: |
| 69 | 75 |
[group_users.pop(k) for k in ['applying_count', 'applying']] |
| 70 | 76 |
return group_users |
| 71 | 77 |
|
| 72 | 78 |
|
| 79 |
+def get_group_users_kv_info(group_id): |
|
| 80 |
+ """ 获取群组用户信息 """ |
|
| 81 |
+ return json.loads(r.get(GROUP_USERS_KV_INFO % group_id) or '{}') or set_group_users_info_by_id(group_id)[1]
|
|
| 82 |
+ |
|
| 83 |
+ |
|
| 73 | 84 |
# 群组照片相关 |
| 74 | 85 |
|
| 75 | 86 |
|
@@ -20,6 +20,7 @@ GROUP_INFO = 'group:info:%s' # STRING,群组信息,group_id |
||
| 20 | 20 |
|
| 21 | 21 |
# 群组用户相关 |
| 22 | 22 |
GROUP_USERS_INFO = 'group:users:info:%s' # STRING,群组用户信息,group_id |
| 23 |
+GROUP_USERS_KV_INFO = 'group:users:kv:info:%s' # STRING,群组用户信息,group_id |
|
| 23 | 24 |
GROUP_USERS_APPLYING_SET = 'group:users:applying:set:%s' # SET,群组用户申请集合,group_id |
| 24 | 25 |
GROUP_USERS_PASSED_SET = 'group:users:passed:set:%s' # SET,群组用户通过集合,group_id |
| 25 | 26 |
GROUP_USERS_REFUSED_SET = 'group:users:refused:set:%s' # SET,群组用户拒绝集合,group_id |